export default [
  {
    keyword: 'audition1',
    title: '浏览器页面有哪三层构成？分别是什么？作用是什么？',
    component: 'Audition1',
  },
  {
    keyword: 'audition2',
    title: 'html5的优点和缺点',
    component: 'Audition2'
  },
  {
    keyword: 'audition3',
    title: 'vue实现双向数据绑定的原理是什么',
    component: 'Audition3'
  },
  {
    keyword: 'audition4',
    title: 'v-model语法糖是怎么实现的',
    component: 'Audition4'
  },
  {
    keyword: 'audition5',
    title: 'Hash和History有哪些区别？',
    component: 'Audition5'
  },
  {
    keyword: 'audition6',
    title: '什么是深拷贝和浅拷贝？怎么实现深拷贝和浅拷贝？',
    component: 'Audition6'
  },
  {
    keyword: 'audition7',
    title: '什么是原型？什么是原型链？继承有哪些方式？',
    component: 'Audition7'
  },
  {
    keyword: 'audition8',
    title: '箭头函数和普通函数有什么区别？',
    component: 'Audition8'
  },
  {
    keyword: 'audition9',
    title: 'new操作符做了哪些事情？怎么实现new？',
    component: 'Audition9'
  },
  {
    keyword: 'audition10',
    title: '说一下eventloop',
    component: 'Audition10'
  },
  {
    keyword: 'audition11',
    title: '什么是闭包？闭包的作用是什么？',
    component: 'Audition11'
  },
  {
    keyword: 'audition12',
    title: 'promise是什么？',
    component: 'Audition12'
  },
  {
    keyword: 'audition13',
    title: 'Set和Map有什么区别？',
    component: 'Audition13'
  },
  {
    keyword: 'audition14',
    title: 'map和forEach有什么区别？',
    component: 'Audition14'
  },
  {
    keyword: 'audition15',
    title: 'locationStorage , sessionStorage , cookie是什么？有什么区别？',
    component: 'Audition15'
  },
  {
    keyword: 'audition16',
    title: 'vuex有哪些基本属性？为什么 Vuex 的 mutation 中不能做异步操作?',
    component: 'Audition16'
  },
  {
    keyword: 'audition17',
    title: 'Loader和Plugin 有什么区别?',
    component: 'Audition17'
  },
  {
    keyword: 'audition18',
    title: '在地址栏里输入一个地址回车会发生哪些事情?',
    component: 'Audition18'
  },
  {
    keyword: 'audition19',
    title: 'UDP和TCP有什么区别?',
    component: 'Audition19'
  },
  {
    keyword: 'audition20',
    title: '项目中常用的性能优化方式有哪些?',
    component: 'Audition20'
  },
  {
    keyword: 'audition21',
    title: '--?',
    component: 'Audition21'
  },
  {
    keyword: 'audition22',
    title: 'vue的计算属性和watch有什么区别?以及它们的运用场景?',
    component: 'Audition22'
  },
  {
    keyword: 'audition23',
    title: 'Vue的生命周期是什么 每个钩子里面具体做了什么事情?',
    component: 'Audition23'
  },
  {
    keyword: 'audition24',
    title: 'vue组件之间的传值有几种方式?',
    component: 'Audition24'
  },
  {
    keyword: 'audition25',
    title: '--?',
    component: 'Audition25'
  },
  {
    keyword: 'audition26',
    title: 'vue中Eventbus具体是怎么实现的?',
    component: 'Audition26'
  },
  {
    keyword: 'audition27',
    title: 'vue中父组件到子组件更新的方式是什么样的?',
    component: 'Audition27'
  },
  {
    keyword: 'audition28',
    title: '$nexttick 是干嘛的，你一般拿它做什么?',
    component: 'Audition28'
  },
  {
    keyword: 'audition29',
    title: 'Keepalive 是什么，里面有哪些钩子?',
    component: 'Audition29'
  },
  {
    keyword: 'audition30',
    title: '插槽是什么 怎么使用的?',
    component: 'Audition30'
  },
  {
    keyword: 'audition31',
    title: 'Es6常见的语法你知道哪一些?',
    component: 'Audition31'
  },
  {
    keyword: 'audition32',
    title: '自定义指令你是怎么用的?',
    component: 'Audition32'
  },
  {
    keyword: 'audition33',
    title: '介绍一下 typeof 区分类型的原理',
    component: 'Audition33'
  },
  {
    keyword: 'audition34',
    title: 'margin边距叠加问题是什么？怎么处理？',
    component: 'Audition34'
  },
  {
    keyword: 'audition35',
    title: '标准盒模型和怪异盒模型?',
    component: 'Audition35'
  },
  {
    keyword: 'audition36',
    title: 'Flex常见的属性有哪些？  flex：1代表什么?',
    component: 'Audition36'
  },
  {
    keyword: 'audition37',
    title: 'Rem你是怎么做适配的?',
    component: 'Audition37'
  },
  {
    keyword: 'audition38',
    title: '媒体查询是什么?',
    component: 'Audition38'
  },
  {
    keyword: 'audition39',
    title: '首屏性能优化你是怎么做的?',
    component: 'Audition39'
  },
  {
    keyword: 'audition40',
    title: '怎么解决白屏问题?',
    component: 'Audition40'
  },
  {
    keyword: 'audition41',
    title: '浏览器的性能监控你是怎么做的?',
    component: 'Audition41'
  },
  {
    keyword: 'audition42',
    title: 'Diff算法是什么  ：key = index 为什么不常用数组的下标作为index  加了它有什么好处?',
    component: 'Audition42'
  },
  {
    keyword: 'audition43',
    title: '虚拟列表你是怎么实现的?',
    component: 'Audition43'
  },
  {
    keyword: 'audition44',
    title: '说一下防抖和节流?',
    component: 'Audition44'
  },
  {
    keyword: 'audition45',
    title: '什么是内存泄漏？哪些情况会导致内存泄漏?',
    component: 'Audition45'
  },
  {
    keyword: 'audition46',
    title: 'Vue的父子组件生命周期钩子函数执行顺序?',
    component: 'Audition46'
  },
  {
    keyword: 'audition47',
    title: '说一下常见的检测数据类型的几种方式?',
    component: 'Audition47'
  },
  {
    keyword: 'audition48',
    title: '说一下vue中的data为什么是一个函数而不是一个对象?',
    component: 'Audition48'
  },
  {
    keyword: 'audition49',
    title: '说一下slice splice split 的区别?',
    component: 'Audition49'
  },
  {
    keyword: 'audition50',
    title: '说一下怎么把类数组转换为数组?',
    component: 'Audition50'
  },
  {
    keyword: 'audition51',
    title: '说一下数组如何去重,你有几种方法?',
    component: 'Audition51'
  },
  {
    keyword: 'audition52',
    title: '说一下怎么取出数组最多的一项?',
    component: 'Audition52'
  },
  {
    keyword: 'audition53',
    title: '说一下JSON.stringify有什么缺点?',
    component: 'Audition53'
  },
  {
    keyword: 'audition54',
    title: '说一下for...in 和 for...of的区别?',
    component: 'Audition54'
  },
  {
    keyword: 'audition55',
    title: '说一下类组件和函数组件的区别?',
    component: 'Audition55'
  },
  {
    keyword: 'audition56',
    title: '说一下react的更新机制?',
    component: 'Audition56'
  },
  {
    keyword: 'audition57',
    title: '说一下redux 里面有什么?',
    component: 'Audition57'
  },
  {
    keyword: 'audition58',
    title: '说一下react和vue框架的区别?',
    component: 'Audition58'
  },
  {
    keyword: 'audition59',
    title: '说一下proxy  它有什么优点?',
    component: 'Audition59'
  },
  {
    keyword: 'audition60',
    title: '说一下vue3.0你了解多少?',
    component: 'Audition60'
  },
  {
    keyword: 'audition61',
    title: '说一下bfc bfc有什么优缺点?',
    component: 'Audition61'
  },
  {
    keyword: 'audition62',
    title: '说一下SPA单页面有什么优缺点?',
    component: 'Audition62'
  },
  {
    keyword: 'audition63',
    title: '说一下前端登录的流程?',
    component: 'Audition63'
  },
  {
    keyword: 'audition64',
    title: '说一下前端权限管理怎么实现?',
    component: 'Audition64'
  },
  {
    keyword: 'audition65',
    title: '说一下购物车的逻辑?',
    component: 'Audition65'
  },
  {
    keyword: 'audition66',
    title: '说一下HTTP和HTTPS协议的区别?',
    component: 'Audition66'
  },
  {
    keyword: 'audition67',
    title: '说一下常见的HTTP状态码?说一下状态码是302和304是什么意思？你在项目中出现过么？你是怎么解决的?',
    component: 'Audition67'
  },
  {
    keyword: 'audition68',
    title: '说一下常见的git操作?',
    component: 'Audition68'
  },
  {
    keyword: 'audition69',
    title: '水平垂直居中的布局方法有哪些?',
    component: 'Audition69'
  },
  {
    keyword: 'audition70',
    title: '简述选择器~和+的区别',
    component: 'Audition70'
  },
  {
    keyword: 'audition71',
    title: '简述data-*属性的用法（如何设置，如何获取），有何优势？',
    component: 'Audition71'
  },
  {
    keyword: 'audition72',
    title: 'z-index是什么？在position的值什么时候可以触发?',
    component: 'Audition72'
  },
  {
    keyword: 'audition73',
    title: 'HTML5有哪些缓存方式？',
    component: 'Audition73'
  },
  {
    keyword: 'audition74',
    title: 'CSS3新增伪类有那些？',
    component: 'Audition74'
  },
  {
    keyword: 'audition75',
    title: '简述一下src与href的区别，title和alt的区别',
    component: 'Audition75'
  },
  {
    keyword: 'audition76',
    title: '什么是CSS hack？',
    component: 'Audition76'
  },
  {
    keyword: 'audition77',
    title: '什么叫做优雅降级和渐进增强？',
    component: 'Audition77'
  },
  {
    keyword: 'audition78',
    title: '移动端适配怎么做？',
    component: 'Audition78'
  },
  {
    keyword: 'audition79',
    title: '请问苹果原生浏览器中默认样式如何清除，例如button，input默认样式？',
    component: 'Audition79'
  },
  {
    keyword: 'audition80',
    title: '为什么要清除浮动？清除浮动的方法有哪些？',
    component: 'Audition80'
  },
  {
    keyword: 'audition81',
    title: '布局左边20%，中间自适应，右边200px，不能用定位。',
    component: 'Audition81'
  },
  {
    keyword: 'audition82',
    title: '块 、 行内块 、 行元素',
    component: 'Audition82'
  },
  {
    keyword: 'audition83',
    title: '如何将多个元素放置在同一行？',
    component: 'Audition83'
  },
  {
    keyword: 'audition84',
    title: 'nth-of-type和nth-child的区别是什么？',
    component: 'Audition84'
  },
  {
    keyword: 'audition85',
    title: 'nth-of-type和nth-child的区别是什么？',
    component: 'Audition85'
  },
  {
    keyword: 'audition86',
    title: '简述 viewport 所有属性',
    component: 'Audition86'
  },
  {
    keyword: 'audition87',
    title: '伪类选择器和伪元素的区别是什么？CSS3中引入的伪元素有什么？',
    component: 'Audition87'
  },
  {
    keyword: 'audition88',
    title: 'HTML5有哪些新特性？如何处理HTML5新标签兼容问题？',
    component: 'Audition88'
  },
  {
    keyword: 'audition89',
    title: '常见浏览器兼容性问题遇到过哪些？你是怎么解决的？',
    component: 'Audition89'
  },
  {
    keyword: 'audition90',
    title: 'media属性？screen? All? max-width? min-width?',
    component: 'Audition90'
  },
  {
    keyword: 'audition91',
    title: 'meta标签的name属性值?',
    component: 'Audition91'
  },
  {
    keyword: 'audition92',
    title: ' px/em/rem有什么区别？为什么通常给font-size设置的字体为62.5%?',
    component: 'Audition92'
  },
  {
    keyword: 'audition93',
    title: '如果对css进行优化如何处理？',
    component: 'Audition93'
  },
  {
    keyword: 'audition94',
    title: '如何对css文件进行压缩合并? webpack如何实现？',
    component: 'Audition94'
  },
  {
    keyword: 'audition95',
    title: 'a标签中 active hover link visited 正确的设置顺序是什么?',
    component: 'Audition95'
  },
  {
    keyword: 'audition96',
    title: '手机端上图片长时间点击会选中图片，如何处理？',
    component: 'Audition96'
  },
  {
    keyword: 'audition97',
    title: '常见的视频编码格式有几种？视频格式有几种？',
    component: 'Audition97'
  },
  {
    keyword: 'audition98',
    title: 'canvas在标签上设置宽高和在style中设置宽高有什么区别？',
    component: 'Audition98'
  },
  {
    keyword: 'audition99',
    title: '什么是border-image？',
    component: 'Audition99'
  },
  {
    keyword: 'audition100',
    title: 'animation的属性有哪些？ transition的属性有哪些？二者有何区别？',
    component: 'Audition100'
  },
  {
    keyword: 'audition101',
    title: '用canvas绘制一个三角形/正方形',
    component: 'Audition101'
  },
  {
    keyword: 'audition102',
    title: '为什么要初始化CSS样式？',
    component: 'Audition102'
  },
  {
    keyword: 'audition103',
    title: '如果我不输入<!DOCTYPE HTML>，HTML5能工作吗？',
    component: 'Audition103'
  },
  {
    keyword: 'audition104',
    title: 'css3选择器有哪些？',
    component: 'Audition104'
  },
  {
    keyword: 'audition105',
    title: 'CSS3中多列布局的用处是什么？',
    component: 'Audition105'
  },
  {
    keyword: 'audition106',
    title: '本地存储有生命周期吗？',
    component: 'Audition106'
  },
  {
    keyword: 'audition107',
    title: 'WebSQL是什么？WebSQL是HTML5规范的一部分吗？',
    component: 'Audition107'
  },
  {
    keyword: 'audition108',
    title: '介绍一下你对浏览器内核的理解？常见的浏览器内核有哪些？',
    component: 'Audition108'
  },
  {
    keyword: 'audition109',
    title: 'iframe的优缺点？',
    component: 'Audition109'
  },
  {
    keyword: 'audition110',
    title: '重排（reflow）与重绘（repaint）',
    component: 'Audition110'
  },
  {
    keyword: 'audition111',
    title: 'BFC 是什么?',
    component: 'Audition111'
  },
  {
    keyword: 'audition112',
    title: 'flex布局有哪些属性?',
    component: 'Audition112'
  },
  {
    keyword: 'audition113',
    title: 'div+css的布局比较table布局有什么优点？',
    component: 'Audition113'
  },
  {
    keyword: 'audition114',
    title: '单行或者多行文本溢出展示省略号的实现方法',
    component: 'Audition114'
  },
  {
    keyword: 'audition115',
    title: 'display: none;和visibility: hidden;的区别是什么？',
    component: 'Audition115'
  },
  {
    keyword: 'audition116',
    title: '移动端通用的1px边框的实现原理？',
    component: 'Audition116'
  },
  {
    keyword: 'audition117',
    title: '如何应用CSS获得当前设备的DPR？',
    component: 'Audition117'
  },
  {
    keyword: 'audition118',
    title: '如何设置10px的字体大小？',
    component: 'Audition118'
  },
  {
    keyword: 'audition119',
    title: '如何实现横向容器自动伸展？',
    component: 'Audition119'
  },
  {
    keyword: 'audition120',
    title: 'position:sticky 用过没，有啥效果？',
    component: 'Audition120'
  },
  {
    keyword: 'audition121',
    title: 'flex:1 的完整写法是？分别是什么意思？',
    component: 'Audition121'
  },
  {
    keyword: 'audition122',
    title: '说说你对GPU的理解，举例说明哪些元素能触发GPU硬件加速？',
    component: 'Audition122'
  },
  {
    keyword: 'audition123',
    title: '纯 CSS 方式实现 CSS 动画的暂停与播放',
    component: 'Audition123'
  },
  {
    keyword: 'audition124',
    title: '使用CSS3动画代替JS动画的好处',
    component: 'Audition124'
  },
  {
    keyword: 'audition125',
    title: '简述一下Sass，Less，请说明区别？',
    component: 'Audition125'
  },
  {
    keyword: 'audition126',
    title: '介绍一下JS的内置类型有哪些？',
    component: 'Audition126'
  },
  {
    keyword: 'audition127',
    title: '介绍一下类型转换',
    component: 'Audition127'
  },
  {
    keyword: 'audition128',
    title: '说说你对 JavaScript 的作用域的理解。什么是作用域链？',
    component: 'Audition128'
  },
  {
    keyword: 'audition129',
    title: '解释下 let 和 const 的块级作用域',
    component: 'Audition129'
  },
  {
    keyword: 'audition130',
    title: '说说你对执行上下文的理解',
    component: 'Audition130'
  },
  {
    keyword: 'audition131',
    title: '简述闭包的问题以及优化',
    component: 'Audition131'
  },
  {
    keyword: 'audition132',
    title: '如何确定 this 指向？改变 this 指向的方式有哪些？',
    component: 'Audition132'
  },
  {
    keyword: 'audition133',
    title: '介绍箭头函数的 this',
    component: 'Audition133'
  },
  {
    keyword: 'audition134',
    title: '谈一下你对原型链的理解，画一个经典的原型链图示',
    component: 'Audition134'
  },
  {
    keyword: 'audition135',
    title: 'ES5/ES6 的继承除写法以外还有什么区别？',
    component: 'Audition135'
  },
  {
    keyword: 'audition136',
    title: '你对事件循环有了解吗？说说看',
    component: 'Audition136'
  },
  {
    keyword: 'audition137',
    title: '微任务和宏任务有什么区别？',
    component: 'Audition137'
  },
  {
    keyword: 'audition138',
    title: '浏览器和 Node 事件循环的区别？',
    component: 'Audition138'
  },
  {
    keyword: 'audition139',
    title: '异步解决方案有哪些？',
    component: 'Audition139'
  },
  {
    keyword: 'audition140',
    title: ' 简述 aync await 的好处',
    component: 'Audition140'
  },
  {
    keyword: 'audition141',
    title: ' 移动端点击事件 300ms 延迟如何去掉？原因是什么？',
    component: 'Audition141'
  },
  {
    keyword: 'audition142',
    title: 'Cookie 有哪些属性？其中HttpOnly，Secure，Expire分别有什么作用？',
    component: 'Audition142'
  },
  {
    keyword: 'audition143',
    title: '如何实现函数的柯里化？比如 add(1)(2)(3)',
    component: 'Audition143'
  },
  {
    keyword: 'audition144',
    title: ' 什么是反柯里化?',
    component: 'Audition144'
  },
  {
    keyword: 'audition145',
    title: ' 将 [1,2] 与 [3,[4]] 合并为 [1,2,3,[4]]',
    component: 'Audition145'
  },
  {
    keyword: 'audition146',
    title: ' 千分法：将 1234567 转换为 1,234,567',
    component: 'Audition146'
  },
  {
    keyword: 'audition147',
    title: ' Promise.resolve(Promise.resolve(1)).then(console.log)输出结果是什么？',
    component: 'Audition147'
  },
  {
    keyword: 'audition148',
    title: ' var let const的区别是什么？',
    component: 'Audition148'
  },
  {
    keyword: 'audition149',
    title: 'onready和onload的区别是什么？',
    component: 'Audition149'
  },
  {
    keyword: 'audition150',
    title: '如何自定义事件？',
    component: 'Audition150'
  },
  {
    keyword: 'audition151',
    title: '如何用 setTImeout 来实现 setInterval？',
    component: 'Audition151'
  },
  {
    keyword: 'audition152',
    title: '如何判断 user 对象里有没有 a 这个属性？如果把user对象中所有的属性都输出出来？',
    component: 'Audition152'
  },
  {
    keyword: 'audition153',
    title: '使用 setTimeout 模拟 setInterval 的功能做一个60秒的倒数计时',
    component: 'Audition153'
  },
  {
    keyword: 'audition154',
    title: '写一个 function，清除字符串前后的空格。（兼容所有的浏览器）',
    component: 'Audition154'
  },
  {
    keyword: 'audition155',
    title: '简述同步和异步的区别',
    component: 'Audition155'
  },
  {
    keyword: 'audition156',
    title: 'JavaScript 中 callee 和 caller 的作用',
    component: 'Audition156'
  },
  {
    keyword: 'audition157',
    title: '检测一个字符串中哪个字符出现的次数最多，出现最多的次数是多少',
    component: 'Audition157'
  },
  {
    keyword: 'audition158',
    title: '数组扁平化',
    component: 'Audition158'
  },
  {
    keyword: 'audition159',
    title: '用 JavaScript 实现观察者模式',
    component: 'Audition159'
  },
  {
    keyword: 'audition160',
    title: '简述一下面象对象的六法则',
    component: 'Audition160'
  },
  {
    keyword: 'audition161',
    title: '谈谈垃圾回收机制方法以及内存管理',
    component: 'Audition161'
  },
  {
    keyword: 'audition162',
    title: '开发过程中遇到内存泄漏的问题都有哪些？',
    component: 'Audition162'
  },
  {
    keyword: 'audition163',
    title: 'https://foo.com/?id=1&name=tom获取name值',
    component: 'Audition163'
  },
  {
    keyword: 'audition164',
    title: '浏览器有哪些兼容问题，你封装过什么插件',
    component: 'Audition164'
  },
  {
    keyword: 'audition165',
    title: '如何判断一个对象是否为数组',
    component: 'Audition165'
  },
  {
    keyword: 'audition166',
    title: '写一个函数，接受可变个数参数，且每个参数均为数字，返回参数的最大值',
    component: 'Audition166'
  },
  {
    keyword: 'audition167',
    title: ' 请写出 ES6 Array.isArray()',
    component: 'Audition167'
  },
  {
    keyword: 'audition168',
    title: '深拷贝：实现一个函数 clone，可以对 JavaScript 中的5种主要数据类型进行值复制',
    component: 'Audition168'
  },
  {
    keyword: 'audition169',
    title: '假如A页面我定义了一个定时器，然后跳到B页面如果让A页面的定时器暂停',
    component: 'Audition169'
  },
  {
    keyword: 'audition170',
    title: 'promise的实现原理，如果我现在向服务器发送一个请求，但是我后悔了，不想让服务器返回数据，去实现一个delay',
    component: 'Audition170'
  },
  {
    keyword: 'audition171',
    title: 'CommonJS 和 RequireJS 的实现原理',
    component: 'Audition171'
  },
  {
    keyword: 'audition172',
    title: '面向对象编程与面向过程编程的区别？',
    component: 'Audition172'
  },
  {
    keyword: 'audition173',
    title: '了解 ES6 的 Proxy 吗？',
    component: 'Audition173'
  },
  {
    keyword: 'audition174',
    title: 'ES6 中，数组监测怎么实现的？',
    component: 'Audition174'
  },
  {
    keyword: 'audition175',
    title: 'jQuery 优点和缺点？',
    component: 'Audition175'
  },
  {
    keyword: 'audition176',
    title: 'ES6 class 关键字原理跟 function 什么区别？',
    component: 'Audition176'
  },
  {
    keyword: 'audition177',
    title: 'iframe 跨域问题，页面之间怎么传值？',
    component: 'Audition177'
  },
  {
    keyword: 'audition178',
    title: '简述 commonJS、AMD 和 CMD',
    component: 'Audition178'
  },
  {
    keyword: 'audition179',
    title: ' require.js 源码看过吗？怎么做到异步加载的',
    component: 'Audition179'
  },
  {
    keyword: 'audition180',
    title: 'AMD 怎么加载文件的?',
    component: 'Audition180'
  },
  {
    keyword: 'audition181',
    title: 'jQuery 怎么找到事件源元素?',
    component: 'Audition181'
  },
  {
    keyword: 'audition182',
    title: 'ES6 的新特性',
    component: 'Audition182'
  },
  {
    keyword: 'audition183',
    title: '0.1+0.2 等不等于 0.3？为什么？自己封装一个让他们相等的方法',
    component: 'Audition183'
  },
  {
    keyword: 'audition184',
    title: '跨域是什么？有哪些解决跨域的方法和方案？',
    component: 'Audition184'
  },
  {
    keyword: 'audition185',
    title: '什么是函数式编程？什么的声明式编程？',
    component: 'Audition185'
  },
  {
    keyword: 'audition186',
    title: 'super() 是否必须执行？不执行怎么让它不报错？',
    component: 'Audition186'
  },
  {
    keyword: 'audition187',
    title: '图片懒加载怎么实现？',
    component: 'Audition187'
  },
  {
    keyword: 'audition188',
    title: 'for-in 循环会遍历出原型上的属性吗？怎么避免遍历到原型上的属性',
    component: 'Audition188'
  },
  {
    keyword: 'audition189',
    title: '简述call、apply、bind，call 和 apply哪个性能更好？',
    component: 'Audition189'
  },
  {
    keyword: 'audition190',
    title: 'Promise 避免回调地狱的语法糖--实现链式调用的核心点是什么？',
    component: 'Audition190'
  },
  {
    keyword: 'audition191',
    title: '进程线程区别是什么？',
    component: 'Audition191'
  },
  {
    keyword: 'audition192',
    title: '禁止事件冒泡，禁止默认事件',
    component: 'Audition192'
  },
  {
    keyword: 'audition193',
    title: '为什么 JavaScript 是单线程?',
    component: 'Audition193'
  },
  {
    keyword: 'audition194',
    title: '使用箭头函数应该注意什么？',
    component: 'Audition194'
  },
  {
    keyword: 'audition195',
    title: 'Cookie、storage 的区别？什么时候使用？',
    component: 'Audition195'
  },
  {
    keyword: 'audition196',
    title: 'JS中的常见设计模式以及应用场景？',
    component: 'Audition196'
  },
  {
    keyword: 'audition197',
    title: '介绍下事件代理，主要解决什么问题?',
    component: 'Audition197'
  },
  {
    keyword: 'audition198',
    title: '数组去重的方法',
    component: 'Audition198'
  },
  {
    keyword: 'audition199',
    title: '并行和并发的区别是什么？',
    component: 'Audition199'
  },
  {
    keyword: 'audition200',
    title: '为什么操作 dom 慢？',
    component: 'Audition200'
  },
  {
    keyword: 'audition201',
    title: '插入10万个 dom ，如何实现页面不卡顿？',
    component: 'Audition201'
  },
  {
    keyword: 'audition202',
    title: 'js中的常用事件绑定方法',
    component: 'Audition202'
  },
  {
    keyword: 'audition203',
    title: '简述 src 和 href 的区别？',
    component: 'Audition203'
  },
  {
    keyword: 'audition204',
    title: '简述原生 js 发 ajax 的步骤',
    component: 'Audition204'
  },
  {
    keyword: 'audition205',
    title: '是否所有函数都有 prototype 一说？',
    component: 'Audition205'
  },
  {
    keyword: 'audition206',
    title: '为什么 await 在 forEach 中不生效？如何解决？',
    component: 'Audition206'
  },
  {
    keyword: 'audition207',
    title: 'instanceof的原理是什么？',
    component: 'Audition207'
  },
  {
    keyword: 'audition209',
    title: ' 什么是 Node.js？我们在哪里使用它？',
    component: 'Audition209'
  },
  {
    keyword: 'audition210',
    title: '为什么要使用 Node.js？',
    component: 'Audition210'
  },
  {
    keyword: 'audition211',
    title: 'Node.js 有哪些特点？',
    component: 'Audition211'
  },
  {
    keyword: 'audition212',
    title: 'setImmediate 和 setTimeOut 区别在哪里?',
    component: 'Audition212'
  },
  {
    keyword: 'audition213',
    title: '为什么 Node.js 是单线程的？',
    component: 'Audition213'
  },
  {
    keyword: 'audition214',
    title: '什么是回调函数？',
    component: 'Audition214'
  },
  {
    keyword: 'audition215',
    title: 'nextTick 和 setImmediate 的区别是什么？',
    component: 'Audition215'
  },
  {
    keyword: 'audition216',
    title: '请使用 Node.js 原生的 HTTP 模块创建一个 web Server',
    component: 'Audition216'
  },
  {
    keyword: 'audition217',
    title: 'koa 中间件的实现原理',
    component: 'Audition217'
  },
  {
    keyword: 'audition218',
    title: '请使用 Node.js 编写代码实现遍历文件夹并输出所有的文件名',
    component: 'Audition218'
  },
  {
    keyword: 'audition219',
    title: '图片上传到服务器的过程',
    component: 'Audition219'
  },
  {
    keyword: 'audition220',
    title: 'token 存储在 localStorage 里，当过期时过期的 token 怎么处理？',
    component: 'Audition220'
  },
  {
    keyword: 'audition221',
    title: 'koa 和 express 的区别',
    component: 'Audition221'
  },
  {
    keyword: 'audition222',
    title: '什么是服务端渲染，服务端渲染的优点？',
    component: 'Audition222'
  },
  {
    keyword: 'audition223',
    title: '谈谈 socket 的三种常见使用方式',
    component: 'Audition223'
  },
  {
    keyword: 'audition224',
    title: '前后端数据交互的常见使用方式',
    component: 'Audition224'
  },
  {
    keyword: 'audition225',
    title: 'Node.js 优缺点',
    component: 'Audition225'
  },
  {
    keyword: 'audition226',
    title: 'HTML、CSS、Javascript 是如何变成页面的？',
    component: 'Audition226'
  },
  {
    keyword: 'audition227',
    title: 'chrome 仅仅打开一个页面，为什么有有4个进程？',
    component: 'Audition227'
  },
  {
    keyword: 'audition228',
    title: '强缓存，协商缓存',
    component: 'Audition228'
  },
  {
    keyword: 'audition229',
    title: '浏览器内核有啥，咋解决兼容问题',
    component: 'Audition229'
  },
  {
    keyword: 'audition230',
    title: 'url从输入到渲染页面的全过程',
    component: 'Audition230'
  },
  {
    keyword: 'audition231',
    title: 'tcp三次握手，四次挥手',
    component: 'Audition231'
  },
  {
    keyword: 'audition232',
    title: '你知道哪些http首部字段？',
    component: 'Audition232'
  },
  {
    keyword: 'audition233',
    title: '为什么浏览器要限制TCP的最大个数',
    component: 'Audition233'
  },
  {
    keyword: 'audition234',
    title: 'HTTP2.0的特点',
    component: 'Audition234'
  },
  {
    keyword: 'audition235',
    title: '说一下HTTP2 多路复用原理，以及多路复用优势？',
    component: 'Audition235'
  },
  {
    keyword: 'audition236',
    title: '简述https原理，以及与http的区别',
    component: 'Audition236'
  },
  {
    keyword: 'audition237',
    title: 'CDN 是什么？描述下 CDN 原理？为什么要用 CDN?',
    component: 'Audition237'
  },
  {
    keyword: 'audition238',
    title: '为什么from表单提交没有跨域问题，但ajax有跨域问题?',
    component: 'Audition238'
  },
  {
    keyword: 'audition239',
    title: 'hash chunkhash contenthash三者区别?',
    component: 'Audition239'
  },
  {
    keyword: 'audition240',
    title: 'Loader和Plugin的区别',
    component: 'Audition240'
  },
  {
    keyword: 'audition241',
    title: '常用Loader和常用Plugin',
    component: 'Audition241'
  },
  {
    keyword: 'audition242',
    title: '如何优化 Webpack 的构建速度?',
    component: 'Audition242'
  },
  {
    keyword: 'audition243',
    title: '页面是否可以快速加载?',
    component: 'Audition243'
  },
  {
    keyword: 'audition244',
    title: '如何防止XSS攻击?',
    component: 'Audition244'
  },
  {
    keyword: 'audition245',
    title: '如何防止CSRF攻击？',
    component: 'Audition245'
  },
  {
    keyword: 'audition246',
    title: 'XSS和CSRF的原理以及防御措施？',
    component: 'Audition246'
  },
  {
    keyword: 'audition247',
    title: '手写forEach ， map , some , every , filter , reduce',
    component: 'Audition247'
  },
  {
    keyword: 'audition248',
    title: 'reduce的高级用法',
    component: 'Audition248'
  },
  {
    keyword: 'audition249',
    title: '手写Vue响应式原理',
    component: 'Audition249'
  },
  {
    keyword: 'audition250',
    title: '手写: 监测数组变化，并返回数组长度',
    component: 'Audition250'
  },
  {
    keyword: 'audition251',
    title: '手写Promise及其相关方法',
    component: 'Audition251'
  },
  {
    keyword: 'audition252',
    title: 'React 事件绑定原理',
    component: 'Audition252'
  },
  {
    keyword: 'audition253',
    title: 'React中的 setState 缺点是什么呢？',
    component: 'Audition253'
  },
  {
    keyword: 'audition254',
    title: 'React组件通信如何实现？',
    component: 'Audition254'
  },
  {
    keyword: 'audition255',
    title: '类组件和函数组件的区别？',
    component: 'Audition255'
  },
  {
    keyword: 'audition256',
    title: 'React有哪些性能优化的手段？',
    component: 'Audition256'
  },
  {
    keyword: 'audition257',
    title: 'React hooks 用过吗，为什么要用？',
    component: 'Audition257'
  },
  {
    keyword: 'audition258',
    title: '虚拟DOM的优劣如何？实现原理？',
    component: 'Audition258'
  },
  {
    keyword: 'audition259',
    title: 'React 和 Vue 的 diff 时间复杂度从 O(n^3) 优化到 O(n) ，那么 O(n^3) 和 O(n) 是如何计算出来的？',
    component: 'Audition259'
  },
  {
    keyword: 'audition260',
    title: '聊聊 Redux 和 Vuex 的设计思想？',
    component: 'Audition260'
  },
  {
    keyword: 'audition261',
    title: 'React中refs的作用是什么？',
    component: 'Audition261'
  },
  {
    keyword: 'audition262',
    title: '请列举react生命周期函数',
    component: 'Audition262'
  },
  {
    keyword: 'audition263',
    title: '组件绑定和js原生绑定事件哪个先执行？',
    component: 'Audition263'
  },
  {
    keyword: 'audition264',
    title: 'A 组件嵌套 B 组件，生命周期执行顺序是怎样的？',
    component: 'Audition264'
  },
  {
    keyword: 'audition265',
    title: '虚拟 dom 和原生 dom',
    component: 'Audition265'
  },
  {
    keyword: 'audition266',
    title: '新出来两个钩子函数？和砍掉的will系列有啥区别？',
    component: 'Audition266'
  },
  {
    keyword: 'audition267',
    title: ' 对单向数据流和双向数据绑定的理解，好处？',
    component: 'Audition267'
  },
  {
    keyword: 'audition268',
    title: ' React 组件中 props 和 state 有什么区别？',
    component: 'Audition268'
  },
  {
    keyword: 'audition269',
    title: ' react中组件分为那俩种？',
    component: 'Audition269'
  },
  {
    keyword: 'audition270',
    title: 'react中 setState 之后做了什么？',
    component: 'Audition270'
  },
  {
    keyword: 'audition271',
    title: 'redux本来是同步的，为什么它能执行异步代码？中间件的实现原理是什么？',
    component: 'Audition271'
  },
  {
    keyword: 'audition272',
    title: '列举重新渲染 render 的情况',
    component: 'Audition272'
  },
  {
    keyword: 'audition273',
    title: 'React 按需加载',
    component: 'Audition273'
  },
  {
    keyword: 'audition274',
    title: '调用this.setState之后，React都做了哪些操作？怎么拿到改变后的值？',
    component: 'Audition274'
  },
  {
    keyword: 'audition275',
    title: '如果我进行三次setState会发生什么?',
    component: 'Audition275'
  },
  {
    keyword: 'audition276',
    title: '渲染一个react组件的过程?',
    component: 'Audition276'
  },
  {
    keyword: 'audition277',
    title: 'useEffect 和 useLayoutEffect 的区别?',
    component: 'Audition277'
  },
  {
    keyword: 'audition278',
    title: 'hooks 的使用有什么注意事项?',
    component: 'Audition278'
  },
  {
    keyword: 'audition279',
    title: '纯函数有什么特点，副作用函数特点?',
    component: 'Audition279'
  },
  {
    keyword: 'audition280',
    title: ' 讲讲什么是 JSX ？',
    component: 'Audition280'
  },
  {
    keyword: 'audition281',
    title: '为什么不直接更新 `state` 呢？',
    component: 'Audition281'
  },
  {
    keyword: 'audition282',
    title: 'React 中的 `useState()` 是什么？',
    component: 'Audition282'
  },
  {
    keyword: 'audition283',
    title: 'React 中的StrictMode(严格模式)是什么？',
    component: 'Audition283'
  },
  {
    keyword: 'audition284',
    title: '为什么类(组件中的)方法需要绑定到类实例？',
    component: 'Audition284'
  },
  {
    keyword: 'audition285',
    title: '什么是 prop drilling，如何避免？',
    component: 'Audition285'
  },
  {
    keyword: 'audition286',
    title: '这段代码有什么问题吗？',
    component: 'Audition286'
  },
  {
    keyword: 'audition287',
    title: '什么是 React Context?',
    component: 'Audition287'
  },
  {
    keyword: 'audition288',
    title: '什么是 React Fiber?',
    component: 'Audition288'
  },
  {
    keyword: 'audition289',
    title: '如何避免组件的重新渲染？',
    component: 'Audition289'
  },
  {
    keyword: 'audition290',
    title: '当调用`setState`时，React `render` 是如何工作的？',
    component: 'Audition290'
  },
  {
    keyword: 'audition291',
    title: '如何避免在React重新绑定实例？',
    component: 'Audition291'
  },
  {
    keyword: 'audition292',
    title: '在js原生事件中 onclick 和 jsx 里 onClick 的区别?',
    component: 'Audition292'
  },
  {
    keyword: 'audition293',
    title: 'diff复杂度原理及具体过程画图',
    component: 'Audition293'
  },
  {
    keyword: 'audition294',
    title: '什么是高阶组件、受控组件及非受控组件？都有啥区别?',
    component: 'Audition294'
  },
  {
    keyword: 'audition295',
    title: 'Redux遵循的三个原则是什么？',
    component: 'Audition295'
  },
  {
    keyword: 'audition296',
    title: 'React中的key的作用是什么？',
    component: 'Audition296'
  },
  {
    keyword: 'audition297',
    title: 'redux中使用setState不能立刻获取值，怎么办？',
    component: 'Audition297'
  },
  {
    keyword: 'audition298',
    title: 'vue react都怎么检测数据变化？',
    component: 'Audition298'
  },
  {
    keyword: 'audition299',
    title: 'React中怎么让 setState 同步更新？',
    component: 'Audition299'
  },
  {
    keyword: 'audition300',
    title: '什么是 immutable？为什么要使用它？',
    component: 'Audition300'
  },
  {
    keyword: 'audition301',
    title: '为什么不建议在 componentWillMount 做AJAX操作？',
    component: 'Audition301'
  },
  {
    keyword: 'audition302',
    title: 'React路由懒加载的实现方法',
    component: 'Audition302'
  },
  {
    keyword: 'audition303',
    title: 'React-router-dom内部是怎么样实现的，怎么做路由守卫？',
    component: 'Audition303'
  },
  {
    keyword: 'audition304',
    title: '为什么说React是view（视图层）?',
    component: 'Audition304'
  },
  {
    keyword: 'audition305',
    title: 'useCallback是干什么的？使用useCallback有什么好处？',
    component: 'Audition305'
  },
  {
    keyword: 'audition306',
    title: 'React复用组件的状态和增强功能的方法',
    component: 'Audition306'
  },
  {
    keyword: 'audition307',
    title: 'redux 和 mobx 的区别',
    component: 'Audition307'
  },
  {
    keyword: 'audition308',
    title: '简单说一下，如何在react中实现瀑布流加载？（左右两列的一个商品长列表）',
    component: 'Audition308'
  },
  {
    keyword: 'audition309',
    title: '如何在Vue的单文件组件里的样式定义全局CSS？',
    component: 'Audition309'
  },
  {
    keyword: 'audition310',
    title: '如何实现一个路径渲染多个组件？',
    component: 'Audition310'
  },
  {
    keyword: 'audition311',
    title: '如何实现多个路径共享一个组件？',
    component: 'Audition311'
  },
  {
    keyword: 'audition312',
    title: '如何监测动态路由的变化?',
    component: 'Audition312'
  },
  {
    keyword: 'audition313',
    title: '对MVC，MVP，MVVM的理解',
    component: 'Audition313'
  },
  {
    keyword: 'audition314',
    title: '说一下$root，$parent，$refs',
    component: 'Audition314'
  },
  {
    keyword: 'audition315',
    title: '你知道Vue响应式数据原理吗？Proxy 与 Object.defineProperty 优劣对比？',
    component: 'Audition315'
  },
  {
    keyword: 'audition316',
    title: 'Composition API 的出现带来哪些新的开发体验，为啥需要这个？',
    component: 'Audition316'
  },
  {
    keyword: 'audition317',
    title: '什么情况下使用 Vuex?',
    component: 'Audition317'
  },
  {
    keyword: 'audition318',
    title: ' Vuex可以直接修改state的值吗？',
    component: 'Audition318'
  },
  {
    keyword: 'audition319',
    title: 'v-model和vuex有冲突吗？',
    component: 'Audition319'
  },
  {
    keyword: 'audition320',
    title: ' 解释单向数据流和双向数据绑定',
    component: 'Audition320'
  },
  {
    keyword: 'audition321',
    title: ' Vue 如何去除url中的 # ?',
    component: 'Audition321'
  },
  {
    keyword: 'audition322',
    title: 'vue-router 路由实现原理',
    component: 'Audition322'
  },
  {
    keyword: 'audition323',
    title: '$route 和 $router 的区别?',
    component: 'Audition323'
  },
  {
    keyword: 'audition324',
    title: ' 对比 jQuery，Vue 有什么不同?',
    component: 'Audition324'
  },
  {
    keyword: 'audition325',
    title: 'Vue 中怎么自定义指令?',
    component: 'Audition325'
  },
  {
    keyword: 'audition326',
    title: 'Vue 中怎么自定义过滤器?',
    component: 'Audition326'
  },
  {
    keyword: 'audition327',
    title: 'Vue 等单页面应用的优缺点?',
    component: 'Audition327'
  },
  {
    keyword: 'audition328',
    title: 'Vue-router 使用params与query传参有什么区别?',
    component: 'Audition328'
  },
  {
    keyword: 'audition329',
    title: 'Vue中 keep-alive 的作用',
    component: 'Audition329'
  },
  {
    keyword: 'audition330',
    title: 'Vue如何实现单页面应用',
    component: 'Audition330'
  },
  {
    keyword: 'audition331',
    title: '说明一下封装vue组件的原则和方法',
    component: 'Audition331'
  },
  {
    keyword: 'audition332',
    title: '说出至少4种Vue当中的指令和它的用法',
    component: 'Audition332'
  },
  {
    keyword: 'audition333',
    title: 'Vuex是什么？怎么使用？描述使用它实现登录功能的流程？',
    component: 'Audition333'
  },
  {
    keyword: 'audition334',
    title: 'Vue-loader解释一下',
    component: 'Audition334'
  },
  {
    keyword: 'audition335',
    title: ' 用 Vue 封装个组件，可以自定义里面有多少个input',
    component: 'Audition335'
  },
  {
    keyword: 'audition336',
    title: '用过插槽吗？用的是具名插槽还是匿名插槽?',
    component: 'Audition336'
  },
  {
    keyword: 'audition337',
    title: 'Vue 路由守卫',
    component: 'Audition337'
  },
  {
    keyword: 'audition338',
    title: ' Vue中如何实现子组件内的css样式名在项目中绝对唯一性',
    component: 'Audition338'
  },
  {
    keyword: 'audition339',
    title: 'Vue3中的双向数据绑定proxy',
    component: 'Audition339'
  },
  {
    keyword: 'audition340',
    title: 'Vue和React中diff算法区别',
    component: 'Audition340'
  },
  {
    keyword: 'audition341',
    title: '请你说一下 Vue 中 create 和 mount 的区别',
    component: 'Audition341'
  },
  {
    keyword: 'audition342',
    title: 'Object.defineProperty有什么缺点?',
    component: 'Audition342'
  },
  {
    keyword: 'audition343',
    title: '实现vue路由懒加载的方法有哪些？',
    component: 'Audition343'
  },
  {
    keyword: 'audition344',
    title: '如果你是leader，做管理系统项目 Vue和React 怎么选择？',
    component: 'Audition344'
  },
  {
    keyword: 'audition345',
    title: 'Vue路由传参，刷新后还有吗?',
    component: 'Audition345'
  },
  {
    keyword: 'audition346',
    title: 'Vue深层次嵌套传值方法',
    component: 'Audition346'
  },
  {
    keyword: 'audition347',
    title: ' Vue组件如何引入使用?',
    component: 'Audition347'
  },
  {
    keyword: 'audition348',
    title: 'Vue $forceUpdate的原理',
    component: 'Audition348'
  },
  {
    keyword: 'audition349',
    title: '为什么要设置key值，可以用index吗？为什么不能？',
    component: 'Audition349'
  },
  {
    keyword: 'audition350',
    title: 'vue-router路由传参的方式',
    component: 'Audition350'
  },
  {
    keyword: 'audition351',
    title: 'vue中用过beforeEach吗？',
    component: 'Audition351'
  },
  {
    keyword: 'audition352',
    title: 'jQuery写的页面，切换到vue的页面，有卡顿吗？',
    component: 'Audition352'
  },
  {
    keyword: 'audition353',
    title: 'Vue组件中的Data为什么是函数，根组件却是对象呢？',
    component: 'Audition353'
  },
  {
    keyword: 'audition354',
    title: '你做过哪些Vue的性能优化？',
    component: 'Audition354'
  },
  {
    keyword: 'audition355',
    title: 'nextTick知道吗、实现的原理是什么？是宏任务还是微任务？',
    component: 'Audition355'
  },
  {
    keyword: 'audition356',
    title: '介绍下vue单页面和多页面区别',
    component: 'Audition356'
  },
  {
    keyword: 'audition357',
    title: 'Vue 的 computed 的原理',
    component: 'Audition357'
  },
  {
    keyword: 'audition358',
    title: 'Vue 中 v-on 可以绑定多个方法吗？',
    component: 'Audition358'
  },
  {
    keyword: 'audition359',
    title: 'Vue中子组件是否可以修改props，如果想修改的话如何修改?',
    component: 'Audition359'
  },
  {
    keyword: 'audition360',
    title: 'Vue中 router-link 和传统 a 链接的区别？',
    component: 'Audition360'
  },
  {
    keyword: 'audition361',
    title: 'Vue插槽是什么？怎么使用？',
    component: 'Audition361'
  },
  {
    keyword: 'audition362',
    title: '什么是 Vue.js 动态组件与异步组件？',
    component: 'Audition362'
  },
  {
    keyword: 'audition363',
    title: '最近关注了什么新技术吗，简单说下你的理解（Vue3.0与Vue2.0对比)',
    component: 'Audition363'
  },
  {
    keyword: 'audition364',
    title: 'Vuex刷新页面数据会丢失吗？咋解决的？',
    component: 'Audition364'
  },
  {
    keyword: 'audition365',
    title: 'v-if 和 v-show的区别?',
    component: 'Audition365'
  },
  {
    keyword: 'audition366',
    title: 'Vue的组件通信有哪些方法？',
    component: 'Audition366'
  },
  {
    keyword: 'audition367',
    title: '谈谈你对Vue3.0有什么了解？',
    component: 'Audition367'
  },
  {
    keyword: 'audition368',
    title: 'Vue如何在用户没登陆的时候重定向登录界面？',
    component: 'Audition368'
  },
  {
    keyword: 'audition369',
    title: 'Vuex和redux有什么区别？他们的共同思想',
    component: 'Audition369'
  },
]